

#ifndef __M_UTIL_H__
#define __M_UTIL_H__
//常用方法的实现
#include <iostream>
#include <ctime>
#include <string>
#include <sys/stat.h>
namespace xglog
{
    namespace util
    {
        class Date
        {
            public:
            //获取当前时间
            static time_t datetime()
            {
                return time(nullptr);
            }
        };

        class File
        {
            public:
            //判断一个文件是否存在
            static bool exists(const std::string& pathname)
            {
                struct stat st;
                if(stat(pathname.c_str(),&st)<0)
                return false;

                return true;
                // return access(pathname.c_str(),F_OK)==0;//跨平台移植性差
            }
            //获取当前文件所在的路径
            static std::string path(const std::string& pathname)
            {
                // ./abc/a.txt
                size_t pos=pathname.find_last_of("/\\");
                if(pos==std::string::npos)
                return ".";

                return pathname.substr(0,pos+1);
            }
            //创建目录
            static void createDrector(const std::string& pathname)
            {
                // ./abc/bcd/cde
                size_t pos=0,idx=0;
                while(idx<pathname.size())
                {
                    //pos指向'/'所在的位置,从idx位置开始找'/'
                    pos=pathname.find_first_of("/\\",idx);
                    //整个路径不带'/',直接创建目录
                    if(pos==std::string::npos)
                    {
                        mkdir(pathname.c_str(),0777);
                    }
                    //存在/，先截取出父目录
                    //父目录存在，跳过
                    //创建路径时，是从0位置开始的
                    std::string parent_dir=pathname.substr(0,pos+1);
                    if(exists(parent_dir))
                    {
                        idx=pos+1;
                        continue;
                    }
                    //父目录不存在，先创建父目录
                    mkdir(parent_dir.c_str(),0777);
                    idx=pos+1;
                }
            }
        };
    }
}
#endif